JMU JMU - Department of Computer Science
Help Tools
Programming Assignment Policies


1 Purpose of Programming Assignments in this Course

In this course, programming assignments are primarily an instructional mechanism, not an assessment mechanism. Nonetheless, programming assignments will be graded and, in fact, will be graded strictly. There are two reasons for this. First, the grades will provide you with an assessment of how well you know the material. Second, experience has shown that beginning Computer Science students do not always make decisions that are in their own best interest, and often do not complete ungraded assignments.

In other words, in this course, programming assignments are designed to: (1) help you learn the materials; (2) help you understand what you have and have not learned; and (3) encourage you to do the work that is necessary for learning to occur.

2 Collaboration

Different courses have different policies about collaboration on programming programming assignments. This document describes the policy for Prof. Bernstein's sections of this course during this semester only. Be careful to understand and comply with the policies that are in place for your other courses.

Failure to comply with these policies is a violation of the JMU Honor Code. Automated tools (like, for example, Moss) may be used on any submission (including "early" submissions), at any time, to detect violations of this policy.

2.1 Rationale for the Collaboration Policy

Unambiguously, the best way for you to achieve the second objective above is for you to complete programming assignments entirely on your own, occasionally asking questions of a general nature (i.e., about the topics you need to understand in order to complete the assignment but not specifics about the assignment itself). However, for some students, collaboration aids in achieving the first objective.

2.2 Allowed Interactions

You may discuss programming assignments with the instructor(s) for this course, instructors for other courses, and other students currently enrolled in this course.

2.3 Inappropriate Interactions

You must not discuss programming assignments with students who are not currently enrolled in this course, including lab/teaching assistants.

Also, you must not discuss programming assignments with tutors of any kind – paid or volunteer, local or remote. Similarly, you must not use code from any source, whether human (e.g., "mechanical turk") or not (e.g., AI-based code generators), that was created based on information that is specific to the assignment (e.g., specifications, function/method/class declarations). When in doubt, assume that code obtained from the Internet must not be used.

Finally, you must not make your solutions to programming assignments available in any form on any WWW sites, solution archives, etc... and you must not get your solutions from such sites (though you may use fragments of code that you find on the WWW).

2.4 Recommended Interactions

You are strongly encouraged to discuss the assignment only with the instructor(s), and to submit work that is entirely your own.

Assistance can be a crutch that actually hinders learning. You will be much more successful at learning the material in this course if you complete the programming assignments independently [with, perhaps, assistance from the instructor(s)]. Though you may lose some points on the programming assignments if you take this approach, it will almost certainly help you on exams (which are a much larger portion of the final grade).

2.5 Courtesy/Etiquette

Though you are entitled to discuss the programming assignments with other people, you must be courteous.

Most importantly, other students in the course are not required, or even encouraged, to provide assistance. So, if asked, you should feel free to decline such a request and, if asking, you must not take offense if such a request is denied.

In addition, the instructor(s) may not provide as much assistance as you want. Most frequently, this happens when they think the assistance you have requested will prevent you from learning an important concept. Sometimes, this happens when they think you are using too much of their time. Again, you must not take offense if a request is denied.

3 Submission

Obviously, all of the programming assignments will involve the construction of code. The code must be submitted electronically using Gradescope. In addition, parts of some programming assignments may require you to answer questions of various kinds. These parts must be submitted using Canvas.

3.1 Number of Gradescope Submissions

Gradescope is a submission tool, not a testing tool. That is, it tests your code for purposes of assessment, not to verify the correctness of your code and not to help you debug your code. Testing and debugging are an important part of the software engineering process, and you must be able to test and debug software in order to succeed in this course (not to mention subsequent courses and as a practicing programmer/software engineer).

To prevent you from relying on Gradescope too heavily, individual assignments may have a maximum number of submissions (perhaps after a certain date) and/or points may be deducted for each submission.

You are responsible for knowing the submission rules for each assignment. In general, your last submission is the one that will be graded.

3.2 Timing of Gradescope Submissions

You are responsible for ensuring that your assignments are submitted on time. You should be aware that electronic submission systems may only be able to process a few submissions per minute. This means that, when there are hundreds of students in different courses submitting at the same time, it might take an hour or more for a submission to be processed.

Your submission must be processed/checked by Gradescope before the time that it is due. It is not enough to have it "in the queue" before the deadline.

In other words, you must recognize that the system might be severely congested and submit your code early enough that the processing time will not be a problem. (This is not unlike a situation in which you need to be someplace at a specific time and you know that the roads might be congested. You are responsible for departing early enough; you must select a departure time that accounts for the congestion.)

4 Grading

Points will be deducted for a variety of reasons, including: incorrect answers, failing the tests conducted as part of the electronic submission process, failing to conform to the course style guide, failing to be properly documented, poor design, poor implementation, and inelegance. Each assignment will include a description of the criteria that will be used for it.

Some criteria will be graded by the submission system (when you submit) and others will be graded by the instructor after the due date. Note that the grade awarded by the submission system is an estimate, not a guarantee. In other words, the grade awarded by the submission system may be modified by the instructor.

Unless stated otherwise, programming assignments must be submitted on or before the due date and time. Programming assignments submitted after the due date/time will not be accepted.

5 Definitions

Terms, equations, concepts, etc... often have multiple definitions. Whenever there is any ambiguity, you must use the definitions that are provided with the assignment.

Copyright 2022